using System;

namespace Rosetta
{
    public interface IMethodEntry
    {
        #region Properties

        [NotNull]
        Type[] ArgumentTypes { get; }

        bool HasArgumentTypes { get; }
        bool HasReturnTypes { get; }

        [NotNull]
        string Name { get; }

        [NotNull]
        Type ReturnType { get; }

        [NotNull]
        Type[] ReturnTypes { get; }

        #endregion

        #region Methods

        string GetArgumentName(int argumentIndex);

        [NotNull]
        Type GetArgumentType(int argumentIndex);

        #endregion
    }
}